package cn.zch.soft.util.unicode;
public class UnicodeUtilFromNet2 {
	public static void main(String[] args) {
		String cn = "刘建鹏";
		System.out.println("4:" + cnToUnicode(cn));
		String cn2 = "刘建鹏";
		System.out.println("4:" + cnToUnicodeo(cn2));
		// 字符串 : \u5f00\u59cb\u4efb\u52a1 ，由于 \ 在java里是转义字符，要写出下面这种形式
		// String unicode = "\\u4f60";
		String unicode = "52185efa9e4f";
		System.out.println("2:" + unicodeToCn2(unicode));
		String unicode1 = "\\u5218\\u5efa\\u9e4f";
		System.out.println("1:" + unicodeToCn(unicode1));
		String unicode2 = "\\u4f60";
		System.out.println("3:" + unicodeToCn(unicode2));
	}
	private static String unicodeToCn(String unicode) {
		/** 以 \ u 分割，因为java注释也能识别unicode，因此中间加了一个空格*/
		String[] strs = unicode.split("\\\\u");
		String returnStr = "";
		// 由于unicode字符串以 \ u 开头，因此分割出的第一个字符是""。
		for (int i = 1; i < strs.length; i++) {
			returnStr += (char) Integer.valueOf(strs[i], 16).intValue();
		}
		return returnStr;
	}
	private static String unicodeToCn2(String unicode) {
		/* 以 \ u 分割，因为java注释也能识别unicode，因此中间加了一个空格*/
		StringBuilder returnStr = new StringBuilder();
		// 由于unicode字符串以 \ u 开头，因此分割出的第一个字符是""。
		for (int i = 0; i < unicode.length(); i += 4) {
			returnStr.append((char) Integer.valueOf(unicode.substring(i, i + 4), 16).intValue());
		}
		return returnStr.toString();
	}
	private static String cnToUnicode(String cn) {
		char[] chars = cn.toCharArray();
		StringBuilder returnStr = new StringBuilder();
		for (char aChar : chars) {
			// returnStr.append("\\u").append(Integer.toString(aChar, 16));
			returnStr.append(Integer.toString(aChar, 16));
		}
		return returnStr.toString();
	}
	private static String cnToUnicodeo(String cn) {
		char[] chars = cn.toCharArray();
		StringBuilder returnStr = new StringBuilder();
		for (char aChar : chars) {
			returnStr.append("\\u").append(Integer.toString(aChar, 16));
			//			returnStr.append(Integer.toString(aChar, 16));
		}
		return returnStr.toString();
	}
}
